package sma.agents.bodies;

import java.awt.Color;
import javax.vecmath.Vector2d;

/**
 * La forme la plus courante pour la representation des agents.
 * 
 * @author Etienne
 * @version 0.1
 */
public abstract class CircleBody {
	/**
	 * Le groupe (télémètre) de l'agent; 
	 */
	protected int groupe;
	
	/**
	 * Diametre du cercle representant l'agent
	 */
	protected int diameter;

	/**
	 * Couleur de l'agent
	 */
	protected Color color;

	/**
	 * position de l'agent dans l'environnement local.
	 */
	protected Vector2d position = new Vector2d();
	
	/**
	 * vitesse de l'agent dans l'environnement local :
	 */
	protected Vector2d vitesse = new Vector2d(0,0);
	
	/**
	 * Son énergie :
	 */
	Vector2d energie = new Vector2d();
	
	/**
	 * masse :
	 */
	double masse = 1;
	
	/**
	 * Renvoie al position de l'agent dans l'environnement local
	 * 
	 * @return Position en Vector2d
	 */
	public Vector2d getPosition() {
		return position;
	}

	/**
	 * Permet de changer la position de l'agent dans son environnement local
	 * 
	 * @param _position la nouvelle position à donner à cet agent
	 */
	public void setPosition(Vector2d _position) {
		position = new Vector2d(_position);
	}

	/**
	 * @return the diameter
	 */
	public int getDiameter() {
		return diameter;
	}

	/**
	 * @return the color
	 */
	public Color getColor() {
		return color;
	}

	/**
	 * @return the vitesse
	 */
	public Vector2d getVitesse() {
		return vitesse;
	}

	/**
	 * @param vitesse the vitesse to set
	 */
	public void setVitesse(Vector2d vitesse) {
		this.vitesse = vitesse;
	}

	/**
	 * @return the masse
	 */
	public double getMasse() {
		return masse;
	}

	/**
	 * @param masse the masse to set
	 */
	public void setMasse(double masse) {
		this.masse = masse;
	}
	
	/**
	 * @return the energie
	 */
	public Vector2d getEnergie() {
		return energie;
	}

	/**
	 * @param energie the energie to set
	 */
	public void setEnergie(Vector2d energie) {
		this.energie = energie;
	}

	/**
	 * @param color the color to set
	 */
	public void setColor(Color color) {
		this.color = color;
	}
	
	/**
	 * 
	 */
	public void setBigBodies(){
		diameter = 10;
	}

	/**
	 * @return the groupe
	 */
	public int getGroupe() {
		return groupe;
	}

	/**
	 * @param groupe the groupe to set
	 */
	public void setGroupe(int groupe) {
		this.groupe = groupe;
	}

}
